#ifndef MYTHREAD_H
#define MYTHREAD_H

#include <QThread>
#include <QDebug>
#include "client.h"
#include "Etat.h"

#define MAIN_NEWCLIENT 0
#define MAIN_NEWGAME 1
#define MAIN_NEWMSG 2

class MyThread : public QThread
{
    Q_OBJECT

private:
    bool running;

    /*
     * Quand on recoit un des 3 evenements MAIN, une de ces valeurs
     * sera changee et lue par la fenetre
     */
    std::string nomClient;
    std::string nomPartie;
    std::string message;
    sf::Uint8 nbJAct;
    sf::Uint8 nbJMax;

    sf::Uint8 valeurPartie;

signals:
    void newClient();
    void newGame();
    void newMsg();
    void decoC();
    void decoP();
    void createGame();
    void addPartie();
    void rmPartie();
    void launch();

public:
    MyThread();
    ~MyThread();

    Client* _client;
    void run();

    void traitementMain(sf::Packet & p);
    void traitementGame(sf::Packet & p);

    void receptionClient();
    void receptionPartie();
    void receptionMessage();
    void decoClient();
    void decoPartie();
    void receptionCarte();
    void traitementNllePartie();
    void traitementAddPartie();
    void traitementRmPartie();

    void quitter();

    std::string getNomClient();
    std::string getNomPartie();
    std::string getMessage();
    sf::Uint8 getNbJAct();
    sf::Uint8 getNbJMax();

    sf::Uint8 getValeurPartie();

    Client* getClient();
};

#endif // MYTHREAD_H
